SpringBoot 整合 ES 您所在的位置:网站首页 spring boot es集群 SpringBoot 整合 ES

SpringBoot 整合 ES

2023-03-30 12:26| 来源: 网络整理| 查看: 265

参考代码:

@Test public void testSearchByTemplate() { // 构建查询条件 NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(QueryBuilders.multiMatchQuery("互联网寒冬", "title", "content")) .withSort(SortBuilders.fieldSort("type").order(SortOrder.DESC))// 按照帖子分类排序 .withSort(SortBuilders.fieldSort("score").order(SortOrder.DESC))// 按照帖子分数排序 .withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC))// 按照帖子发布日期排序 .withPageable(PageRequest.of(0, 10))// 每页十条数据 .withHighlightFields( // 标题和内容中的匹配字段高亮展示 new HighlightBuilder.Field("title").preTags("").postTags(""), new HighlightBuilder.Field("content").preTags("").postTags("") ).build(); // 得到查询结果返回容纳指定内容对象的集合SearchHits SearchHits searchHits = elasticsearchRestTemplate.search(searchQuery, DiscussPost.class); // 设置一个需要返回的实体类集合 List discussPosts = new ArrayList(); // 遍历返回的内容进行处理 for (SearchHit searchHit : searchHits) { // 高亮的内容 Map highlightFields = searchHit.getHighlightFields(); // 将高亮的内容填充到content中 searchHit.getContent().setTitle(highlightFields.get("title") == null ? searchHit.getContent().getTitle() : highlightFields.get("title").get(0)); searchHit.getContent().setTitle(highlightFields.get("content") == null ? searchHit.getContent().getContent() : highlightFields.get("content").get(0)); // 放到实体类中 discussPosts.add(searchHit.getContent()); } // 输出结果 System.out.println(discussPosts.size()); for (DiscussPost discussPost : discussPosts) { System.out.println(discussPost); } } 复制代码 总结

(1)Elasticsearch可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司。

(2)Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)。

(3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有